/**
* <p>
* Session managers are responsible for managing the {@link PicketBoxSession} instances. Session managers usually delegate the
* storage of sessions to {@link SessionStore} implementations.
* </p>
*
* @author Anil Saldhana
* @author <a href="mailto:psilva@redhat.com">Pedro Silva</a>
*
* @see SessionStore
*/
public interface SessionManager extends PicketBoxLifecycle {
/**
* Construct a session
*
* @param authenticatedSubject
* @return
*/
PicketBoxSession create(PicketBoxSubject authenticatedSubject);
/**
* <p>
* Retrieve a {@link PicketBoxSession} using its {@link SessionId}.
* </p>
*
* @param id
* @return
*/
PicketBoxSession retrieve(SessionId<? extends Serializable> id);
/**
* <p>
* Removes a {@link PicketBoxSession}.
* </p>
* @param session
*/
void remove(PicketBoxSession session);
/**
* <p>
* Updates a {@link PicketBoxSession}.
* </p>
*
* @param session
*/
void update(PicketBoxSession session);
}